// src/renderer/workbench/index.js
// electronAPI 通过 preload 注入，无需 require('electron')
// const { initializeDataModule, importData } = require('./data'); // Removed
// const { initializeTemplateModule, openTemplateManagementTab } = require('./template'); // Removed
// const { initializeProfileModule } = require('./profile'); // Removed
// const { initializeAnalysisModule } = require('./analysis'); // Removed
// const { initializeToolsModule } = require('./tools'); // Removed
// const { initializeDataViewModule, showDataViewTab, getIcon, getDataTypeName } = require('./data-view'); // Removed
// const { formatDate } = require('../../common/utils'); // Removed

// 全局变量
let currentTabId = null;
let skipDefaultInit = false; // 标志：是否跳过默认初始化

// 暴露给 HTML 的全局函数
window.showImportModal = function () {
  // const { importData } = require('./data'); // Removed
  window.DataModule.importData();
};



document.addEventListener('DOMContentLoaded', () => {
  initializeWorkbench();
  bindEvents();
  loadCurrentCaseInfo();

  // 监听从主进程发来的激活标签页消息
  window.electronAPI.navigation.onActivateTab((data) => {
    // 设置标志，阻止默认初始化行为
    skipDefaultInit = true;

    // 兼容旧的字符串参数和新的对象参数
    const tabName = typeof data === 'string' ? data : data.activeTab;

    // 如果传递了案件信息，则更新当前案件
    if (typeof data === 'object' && data.caseId) {
      sessionStorage.setItem('currentCaseId', data.caseId);
      if (data.caseName) {
        sessionStorage.setItem('currentCaseName', data.caseName);
        updateCaseInfoDisplay(data.caseName, data.caseId);
      }
    }

    // 使用setTimeout确保页面完全加载后再激活标签
    setTimeout(() => {
      if (tabName === 'template') {
        // 激活模板管理标签页
        const templateBtn = document.querySelector('[data-module="template"]');
        if (templateBtn) {
          templateBtn.click();
        }
      } else if (tabName === 'analysis') {
        // 激活智能分析标签页
        const analysisBtn = document.querySelector('[data-module="analysis"]');
        if (analysisBtn) {
          analysisBtn.click();
        }
      }
      // 可以在这里添加其他标签页的激活逻辑
    }, 600); // 延迟到600ms，确保在默认初始化之后
  });
});

function initializeWorkbench() {
  window.DataModule.initializeDataModule();
  window.TemplateManager.initializeTemplateModule();
  window.ProfileModule.initializeProfileModule();
  window.AnalysisModule.initializeAnalysisModule();
  window.ToolsModule.initializeToolsModule();
  window.DataViewModule.initializeDataViewModule();

  // 默认打开导入中心 (响应问题1) - 只有在没有指定标签时才执行
  setTimeout(() => {
    if (!skipDefaultInit) {
      if (window.showImportModal) window.showImportModal();
      setActiveNav('data'); // 默认高亮数据管理
    }
  }, 500);
}

function loadCurrentCaseInfo() {
  const caseId = sessionStorage.getItem('currentCaseId');
  const caseName = sessionStorage.getItem('currentCaseName');

  if (caseId && caseName) {
    const div = document.createElement('div');
    div.className = 'case-info-banner';
    div.innerHTML = `<span>当前案件: <strong>${caseName}</strong></span><span style="color:#999; font-size:0.8em;">ID: ${caseId}</span><button class="switch-case-btn" onclick="switchCase()" style="margin-left: 10px; padding: 2px 8px; font-size: 0.8em; background: #409eff; color: white; border: none; border-radius: 3px; cursor: pointer;">切换案件</button>`;
    document.querySelector('.workbench-header').insertAdjacentElement('afterend', div);
  }
}

function bindEvents() {
  let dropdownTimer = null; // 下拉菜单延迟关闭定时器

  // 辅助函数：关闭所有下拉菜单
  function closeAllDropdowns() {
    document.querySelectorAll('.dropdown.open').forEach(d => d.classList.remove('open'));
  }

  // 顶部菜单点击事件
  document.querySelectorAll('.nav-item').forEach(item => {
    item.addEventListener('click', (e) => {
      // 如果是下拉菜单触发器
      if (item.classList.contains('dropdown-toggle')) {
        const parent = item.parentElement; // .dropdown
        const module = item.getAttribute('data-module');

        // 切换下拉菜单的展开状态
        if (parent.classList.contains('open')) {
          parent.classList.remove('open');
        } else {
          closeAllDropdowns();
          parent.classList.add('open');
        }
        setActiveNav(module);
        e.stopPropagation(); // 防止冒泡触发 document click
        return;
      }

      // 普通菜单
      const module = item.getAttribute('data-module');
      setActiveNav(module);

      if (module === 'template') {
        openTemplateManagementTab();
      } else if (module === 'analysis') {
        console.log('尝试打开智能分析标签...');
        if (window.AnalysisModule && typeof window.AnalysisModule.openAnalysisTab === 'function') {
          try {
            window.AnalysisModule.openAnalysisTab();
          } catch (err) {
            console.error('打开智能分析标签失败:', err);
            alert('打开智能分析失败: ' + err.message);
          }
        } else {
          console.error('AnalysisModule 未定义或 openAnalysisTab 不是函数', window.AnalysisModule);
          alert('智能分析模块未正确加载，请检查控制台日志');
        }
      } else if (module === 'profile') {
        alert('人物画像模块开发中...');
      } else if (module === 'tools') {
        alert('工具箱开发中...');
      }
    });

    // 鼠标悬浮事件（仅针对下拉菜单）
    if (item.classList.contains('dropdown-toggle')) {
      const parent = item.parentElement;

      // 鼠标移入
      parent.addEventListener('mouseenter', () => {
        if (dropdownTimer) {
          clearTimeout(dropdownTimer);
          dropdownTimer = null;
        }
        // 不要关闭其他菜单，只打开当前的，防止闪烁
        // closeAllDropdowns(); 
        parent.classList.add('open');
      });

      // 鼠标移出
      parent.addEventListener('mouseleave', () => {
        if (dropdownTimer) clearTimeout(dropdownTimer);
        dropdownTimer = setTimeout(() => {
          parent.classList.remove('open');
        }, 500); // 500ms 延迟关闭
      });
    }
  });

  // 点击外部关闭下拉（保留作为备用）
  document.addEventListener('click', (e) => {
    // 检查点击的元素是否在下拉菜单内
    if (!e.target.closest('.dropdown')) {
      closeAllDropdowns();
    }
  });

  // 返回首页
  const homeBtn = document.getElementById('homeBtn');
  if (homeBtn) {
    homeBtn.addEventListener('click', async () => {
      sessionStorage.removeItem('currentCaseId'); // Keep this line
      try {
        await window.electronAPI.navigation.goToMainPage();
      } catch (error) {
        console.error('Failed to navigate to main page:', error);
        alert('返回首页失败');
      }
    });
  }
}

// 设置顶部菜单高亮
function setActiveNav(module) {
  document.querySelectorAll('.nav-item').forEach(n => n.classList.remove('active'));
  // 兼容下拉菜单的 toggle 按钮
  const btn = document.querySelector(`.nav-item[data-module="${module}"]`);
  if (btn) btn.classList.add('active');
}

// --- 标签页系统 ---

window.createTabInWorkbench = function (tabId, title, content) {
  const tabList = document.querySelector('.tab-list');
  const tabContent = document.querySelector('.tab-content');
  if (!tabList || !tabContent) return;

  if (document.querySelector(`.tab-item[data-tab="${tabId}"]`)) {
    activateTab(tabId);
    return;
  }

  const tabItem = document.createElement('div');
  tabItem.className = 'tab-item';
  tabItem.setAttribute('data-tab', tabId);
  tabItem.innerHTML = `<span>${title}</span><span class="tab-close">×</span>`;

  tabItem.addEventListener('click', (e) => {
    if (e.target.classList.contains('tab-close')) closeTab(tabId);
    else activateTab(tabId);
  });

  const pane = document.createElement('div');
  pane.className = 'tab-pane';
  pane.id = tabId;
  pane.innerHTML = content;

  tabList.appendChild(tabItem);
  tabContent.appendChild(pane);
  activateTab(tabId);
};

function activateTab(tabId) {
  document.querySelectorAll('.tab-item').forEach(t => t.classList.remove('active'));
  document.querySelectorAll('.tab-pane').forEach(p => p.classList.remove('active'));

  const tab = document.querySelector(`.tab-item[data-tab="${tabId}"]`);
  const pane = document.getElementById(tabId);

  if (tab) tab.classList.add('active');
  if (pane) pane.classList.add('active');
  currentTabId = tabId;

  // 切换 Tab 时更新顶部菜单高亮 (响应问题9的一部分)
  if (tabId.includes('map') || tabId.includes('import') || tabId.includes('data-view')) {
    setActiveNav('data');
  } else if (tabId.includes('template')) {
    setActiveNav('template');
  }
}

function closeTab(tabId) {
  const tab = document.querySelector(`.tab-item[data-tab="${tabId}"]`);
  const pane = document.getElementById(tabId);
  if (tab) tab.remove();
  if (pane) pane.remove();

  const tabs = document.querySelectorAll('.tab-item');
  if (tabs.length > 0) {
    activateTab(tabs[tabs.length - 1].getAttribute('data-tab'));
  } else {
    const dashboard = document.getElementById('dashboardPane');
    if (dashboard) dashboard.classList.add('active');
  }
}

// --- 业务功能 ---

window.showImportModal = function () {
  // 关闭下拉菜单
  document.querySelectorAll('.dropdown.open').forEach(d => d.classList.remove('open'));

  const content = `
    <div class="module-header"><h2>导入数据</h2><p>请选择要导入的数据类型</p></div>
    <div class="import-options" style="display:grid; grid-template-columns:repeat(auto-fill, minmax(200px, 1fr)); gap:20px; padding:20px;">
      ${['bank', 'call', 'travel', 'accommodation', 'property', 'railway', 'flight', 'business'].map(type => `
        <div class="import-card" style="border:1px solid #eee; padding:20px; text-align:center; border-radius:8px; cursor:pointer; transition:all 0.2s; background:white;" onclick="triggerImport('${type}')">
          <div style="font-size:2.5rem; margin-bottom:10px;">${window.SidebarModule.getIcon(type)}</div>
          <h3>${window.SidebarModule.getDataTypeName(type)}</h3>
          <button class="btn-secondary" style="margin-top:10px; width:100%;">选择文件</button>
        </div>
      `).join('')}
    </div>
  `;
  window.createTabInWorkbench('import-center', '导入中心', content);
};

// 获取案件列表并让用户选择
async function selectCase() {
  try {
    const result = await window.CaseSelector.selectCase();
    if (result) {
      // 保存到 sessionStorage
      sessionStorage.setItem('currentCaseId', result.id);
      sessionStorage.setItem('currentCaseName', result.name);
      // 更新页面头部的案件信息显示
      updateCaseInfoDisplay(result.name, result.id);
      return result.id;
    }
    return null;
  } catch (error) {
    console.error('选择案件失败:', error);
    return null;
  }
}

// 更新页面头部的案件信息显示
function updateCaseInfoDisplay(caseName, caseId) {
  // 移除现有的案件信息横幅（如果存在）
  const existingBanner = document.querySelector('.case-info-banner');
  if (existingBanner) {
    existingBanner.remove();
  }

  // 创建新的案件信息横幅
  const div = document.createElement('div');
  div.className = 'case-info-banner';
  div.innerHTML = `<span>当前案件: <strong>${caseName}</strong></span><span style="color:#999; font-size:0.8em;">ID: ${caseId}</span><button class="switch-case-btn" onclick="switchCase()" style="margin-left: 10px; padding: 2px 8px; font-size: 0.8em; background: #409eff; color: white; border: none; border-radius: 3px; cursor: pointer;">切换案件</button>`;
  document.querySelector('.workbench-header').insertAdjacentElement('afterend', div);
}

// 将 selectCase 函数暴露到全局，供其他模块使用
window.selectCase = selectCase;

// 切换案件功能
window.switchCase = async function () {
  const caseId = await selectCase();
  if (caseId) {
    // 重新加载页面内容以应用新的案件
    location.reload();
  }
};

window.triggerImport = async function (dataType) {
  let caseId = sessionStorage.getItem('currentCaseId');
  let caseName = sessionStorage.getItem('currentCaseName');

  // 如果没有存储的案件信息，尝试从页面中获取
  if (!caseId || !caseName) {
    // 从头部横幅获取案件信息（如果存在）
    const caseBanner = document.querySelector('.case-info-banner');
    if (caseBanner) {
      const caseText = caseBanner.textContent;
      const idMatch = caseText.match(/ID:\s*(\d+)/);
      if (idMatch) {
        caseId = idMatch[1];
      }
    }
  }

  // 如果仍然没有案件信息，显示案件选择界面
  if (!caseId) {
    caseId = await selectCase();
    if (!caseId) {
      // 用户取消选择，不执行导入
      return;
    }
  }

  // 确保caseId是数字
  caseId = parseInt(caseId);
  if (isNaN(caseId)) {
    console.error('无效的案件ID:', caseId);
    alert('无效的案件ID');
    return;
  }

  await importData(dataType, caseId);
};
